import type { KatexOptions } from "katex";
export interface MathExtensionOption {
  /**
   * 是否启用 LaTeX 表达式计算功能。
   * 例如：输入 $x=1$ 后，可以自动显示 x=1 的值。
   */
  evaluation: boolean;

  /**
   * 是否添加 InlineMath 节点类型。
   * 目前这是必须启用的，因为只支持内联模式。
   */
  addInlineMath: boolean;

  /**
   * 用于公式渲染的 KaTeX 配置项。
   * 可参考官方文档：https://katex.org/docs/options.html
   */
  katexOptions?: KatexOptions;

  /**
   * 自动转换公式的分隔符设置。
   * 默认使用美元符号风格（dollar），即 $x_1$ 和 $$\sum_i i$$。
   *
   * 使用 bracket 模式对应的是：\(x_1\) 和 \[\sum_i i\]。
   *
   * 也可以使用自定义的正则表达式和起止符号：
   * - inlineRegex: 内联公式的匹配正则
   * - blockRegex: 块级公式的匹配正则
   * - inlineStart/inlineEnd: 内联公式起始和结束符号
   * - blockStart/blockEnd: 块级公式起始和结束符号
   *
   * 注意：期望公式内容在匹配结果的第1个捕获组中（props.match[1]）。
   */
  delimiters?:
  | "dollar"
  | "bracket"
  | {
    inlineRegex?: string;
    blockRegex?: string;
    inlineStart?: string;
    inlineEnd?: string;
    blockStart?: string;
    blockEnd?: string;
  };

  /**
   * 控制如何在原始文本输出中表示数学节点（如 editor.getText()）。
   *
   * - `"none"`：不在文本中包含公式
   * - `"raw-latex"`：仅包含 LaTeX 源码，不带分隔符（如 \frac{1}{n}）
   * - `{ placeholder: "[...]" }`：所有公式都用固定占位符表示（如 [...]）
   *
   * 注：delimited-latex 模式目前被禁用，因为它会重新触发输入规则。
   *     参考 issue: https://github.com/ueberdosis/tiptap/issues/2946
   *
   * - ~`"delimited-latex"`：包含 LaTeX 源码和分隔符（如 $\\frac{1}{n}$）~ （已注释掉）
   */
  renderTextMode?: "none" | "raw-latex" | { placeholder: string }; // |"delimited-latex"
}

/**
 * 默认配置对象，供 MathExtension 初始化时使用。
 */
export const DEFAULT_OPTIONS: MathExtensionOption = {
  addInlineMath: true,   // 默认启用内联公式支持
  evaluation: false,     // 默认不启用公式计算
  delimiters: "dollar",  // 默认使用美元符号 $...$ 和 $$...$$
  renderTextMode: "raw-latex", // 默认以 raw-latex 模式输出文本
};
